﻿using System;
using System.Collections.Generic;
using System.Text;
using System.ServiceModel;
using com.creditos.be.liclBases;
using com.creditos.be.liclEntities;
using com.creditos.bl.interfaces.liclBases;
using com.creditos.config;
using com.creditos.be.liclSolcred;
using com.creditos.be.liclUtil;
using com.creditos.bl.liclUtil;
using com.creditos.bl.interfaces.liclUtil;
using com.creditos.bl.interfaces.liclSolcred;

namespace LiclBases
{
    public class LiclBasesPController
    {
        Config config = new Config();
        public LiclBasesPController()
        { 
        
        }
        public Global Usuario_Validar(List<ClienteConsulta> ClienteConsultaList)
        {
            ChannelFactory<IBasesExternasBL> factory = null;
            using (factory = new ChannelFactory<IBasesExternasBL>(config.Context + "Bases"))
            {
                IBasesExternasBL oUsu = factory.CreateChannel();
                Global lst = oUsu.InicioBuro_Creditos(ClienteConsultaList, string.Empty);
                factory.Close();
                return lst;
            }
        }

        public void ActualizarBuroDatosGenerales(List<DatGen> oDatosGenerales)
        {
            ChannelFactory<IBasesExternasBL> factory = null;
            using (factory = new ChannelFactory<IBasesExternasBL>(config.Context + "Bases"))
            {
                IBasesExternasBL oUsu = factory.CreateChannel();
                oUsu.ActualizarBuroDatosGenerales(oDatosGenerales);
                factory.Close();                
            }
        }

        public void ActualizarBuroCalificacion(List<Calificacion> oCalificacion)
        {
            ChannelFactory<IBasesExternasBL> factory = null;
            using (factory = new ChannelFactory<IBasesExternasBL>(config.Context + "Bases"))
            {
                IBasesExternasBL oUsu = factory.CreateChannel();
                oUsu.ActualizarBuroCalificacion(oCalificacion);
                factory.Close();
            }
        }

        public void ActualizarBuroMorosidad(List<Morosidad> oMorosidad)
        {
            ChannelFactory<IBasesExternasBL> factory = null;
            using (factory = new ChannelFactory<IBasesExternasBL>(config.Context + "Bases"))
            {
                IBasesExternasBL oUsu = factory.CreateChannel();
                oUsu.ActualizarBuroMorosidad(oMorosidad);
                factory.Close();
            }
        }

        public void ActualizarBuroDeudaSBSEntidad(List<MorosidadSBS> oMorosidadSBS)
        {
            ChannelFactory<IBasesExternasBL> factory = null;
            using (factory = new ChannelFactory<IBasesExternasBL>(config.Context + "Bases"))
            {
                IBasesExternasBL oUsu = factory.CreateChannel();
                oUsu.ActualizarBuroDeudaSBSEntidad(oMorosidadSBS);
                factory.Close();
            }
        }

        public List<IntegrantesBuro> ObtenerListaIntegrantesBuroCredito(ClienteConsulta oIntegrantes)
        {
            ChannelFactory<IBasesExternasBL> factory = null;
            using (factory = new ChannelFactory<IBasesExternasBL>(config.Context + "Bases"))
            {
                IBasesExternasBL oUsu = factory.CreateChannel();
                List<IntegrantesBuro> lst = oUsu.ObtenerListaIntegrantesBuroCredito(oIntegrantes);
                factory.Close();
                return lst;
            }
        }

        public List<ReglasEvaluacion> ObtenerListaResultadoReglas(ClienteConsulta oSolicitud)
        {
            ChannelFactory<IBasesExternasBL> factory = null;
            using (factory = new ChannelFactory<IBasesExternasBL>(config.Context + "Bases"))
            {
                IBasesExternasBL oUsu = factory.CreateChannel();
                List<ReglasEvaluacion> lst = oUsu.ObtenerListaResultadoReglas(oSolicitud);
                factory.Close();
                return lst;
            }
        }

        public List<DatGen> ObtenerBuroDatosGenerales(ClienteConsulta oSolicitud)
        {
            ChannelFactory<IBasesExternasBL> factory = null;
            using (factory = new ChannelFactory<IBasesExternasBL>(config.Context + "Bases"))
            {
                IBasesExternasBL oUsu = factory.CreateChannel();
                List<DatGen> lst = oUsu.ObtenerBuroDatosGenerales(oSolicitud);
                factory.Close();
                return lst;
            }
        }

        public List<OtrDir> ObtenerBuroOtraDireccion(ClienteConsulta oSolicitud)
        {
            ChannelFactory<IBasesExternasBL> factory = null;
            using (factory = new ChannelFactory<IBasesExternasBL>(config.Context + "Bases"))
            {
                IBasesExternasBL oUsu = factory.CreateChannel();
                List<OtrDir> lst = oUsu.ObtenerBuroOtraDireccion(oSolicitud);
                factory.Close();
                return lst;
            }
        }

        public List<Omisos> ObtenerBuroOmisos(ClienteConsulta oSolicitud)
        {
            ChannelFactory<IBasesExternasBL> factory = null;
            using (factory = new ChannelFactory<IBasesExternasBL>(config.Context + "Bases"))
            {
                IBasesExternasBL oUsu = factory.CreateChannel();
                List<Omisos> lst = oUsu.ObtenerBuroOmisos(oSolicitud);
                factory.Close();
                return lst;
            }
        }

        public List<RepresentantesLegales> ObtenerBuroRepresentanteLegal(ClienteConsulta oSolicitud)
        {
            ChannelFactory<IBasesExternasBL> factory = null;
            using (factory = new ChannelFactory<IBasesExternasBL>(config.Context + "Bases"))
            {
                IBasesExternasBL oUsu = factory.CreateChannel();
                List<RepresentantesLegales> lst = oUsu.ObtenerBuroRepresentanteLegal(oSolicitud);
                factory.Close();
                return lst;
            }
        }

        public List<Calificacion> ObtenerBuroCalificaciones(ClienteConsulta oSolicitud)
        {
            ChannelFactory<IBasesExternasBL> factory = null;
            using (factory = new ChannelFactory<IBasesExternasBL>(config.Context + "Bases"))
            {
                IBasesExternasBL oUsu = factory.CreateChannel();
                List<Calificacion> lst = oUsu.ObtenerBuroCalificaciones(oSolicitud);
                factory.Close();
                return lst;
            }
        }

        public List<Adversos> ObtenerBuroAdversos(ClienteConsulta oSolicitud)
        {
            ChannelFactory<IBasesExternasBL> factory = null;
            using (factory = new ChannelFactory<IBasesExternasBL>(config.Context + "Bases"))
            {
                IBasesExternasBL oUsu = factory.CreateChannel();
                List<Adversos> lst = oUsu.ObtenerBuroAdversos(oSolicitud);
                factory.Close();
                return lst;
            }
        }

        public List<Morosidad> ObtenerBuroMorosidad(ClienteConsulta oSolicitud)
        {
            ChannelFactory<IBasesExternasBL> factory = null;
            using (factory = new ChannelFactory<IBasesExternasBL>(config.Context + "Bases"))
            {
                IBasesExternasBL oUsu = factory.CreateChannel();
                List<Morosidad> lst = oUsu.ObtenerBuroMorosidad(oSolicitud);
                factory.Close();
                return lst;
            }
        }

        public List<Protesto> ObtenerBuroProtestos(ClienteConsulta oSolicitud)
        {
            ChannelFactory<IBasesExternasBL> factory = null;
            using (factory = new ChannelFactory<IBasesExternasBL>(config.Context + "Bases"))
            {
                IBasesExternasBL oUsu = factory.CreateChannel();
                List<Protesto> lst = oUsu.ObtenerBuroProtestos(oSolicitud);
                factory.Close();
                return lst;
            }
        }


        public List<DeudaSBS> ObtenerBuroResumenDeudaSBSEntidad(ClienteConsulta oSolicitud)
        {
            ChannelFactory<IBasesExternasBL> factory = null;
            using (factory = new ChannelFactory<IBasesExternasBL>(config.Context + "Bases"))
            {
                IBasesExternasBL oUsu = factory.CreateChannel();
                List<DeudaSBS> lst = oUsu.ObtenerBuroResumenDeudaSBSEntidad(oSolicitud);
                factory.Close();
                return lst;
            }
        }

        public List<MorosidadSBS> ObtenerBuroDeudaSBSEntidad(ClienteConsulta oSolicitud)
        {
            ChannelFactory<IBasesExternasBL> factory = null;
            using (factory = new ChannelFactory<IBasesExternasBL>(config.Context + "Bases"))
            {
                IBasesExternasBL oUsu = factory.CreateChannel();
                List<MorosidadSBS> lst = oUsu.ObtenerBuroDeudaSBSEntidad(oSolicitud);
                factory.Close();
                return lst;
            }
        }

        public List<ParametroBE> ListarParametros(ParametroBE oParametroBE)
        {
            ChannelFactory<IParametroBL> factory = null;
            using (factory = new ChannelFactory<IParametroBL>(config.Context + "Parametro"))
            {
                IParametroBL oParm = factory.CreateChannel();
                List<ParametroBE> lst = oParm.Listar(oParametroBE);
                factory.Close();
                return lst;
            }
        }

        public List<ReglaCentralRiesgo> ListarVariables()
        {
            ChannelFactory<IBasesExternasBL> factory = null;
            using (factory = new ChannelFactory<IBasesExternasBL>(config.Context + "Bases"))
            {
                IBasesExternasBL oParm = factory.CreateChannel();
                List<ReglaCentralRiesgo> lst = oParm.ListarVariables();
                factory.Close();
                return lst;
            }
        }

        public List<ReglaCentralRiesgo> ActualizarPoliticaCredito(ReglaCentralRiesgo oReglaCentral)
        {
            ChannelFactory<IBasesExternasBL> factory = null;
            using (factory = new ChannelFactory<IBasesExternasBL>(config.Context + "Bases"))
            {
                IBasesExternasBL oUsu = factory.CreateChannel();
                List<ReglaCentralRiesgo> lst = oUsu.ActualizarPoliticaCredito(oReglaCentral);
                factory.Close();
                return lst;
            }
        }

        public List<ReglaCentralRiesgo> ActualizarReglaNegocio(ReglaCentralRiesgo oReglaCentral)
        {
            ChannelFactory<IBasesExternasBL> factory = null;
            using (factory = new ChannelFactory<IBasesExternasBL>(config.Context + "Bases"))
            {
                IBasesExternasBL oUsu = factory.CreateChannel();
                List<ReglaCentralRiesgo> lst = oUsu.ActualizarReglaNegocio(oReglaCentral);
                factory.Close();
                return lst;
            }
        }

        public List<ReglaCentralRiesgo> ActualizarReglaNegocioCondicion(ReglaCentralRiesgo oReglaCentral)
        {
            ChannelFactory<IBasesExternasBL> factory = null;
            using (factory = new ChannelFactory<IBasesExternasBL>(config.Context + "Bases"))
            {
                IBasesExternasBL oUsu = factory.CreateChannel();
                List<ReglaCentralRiesgo> lst = oUsu.ActualizarReglaNegocioCondicion(oReglaCentral);
                factory.Close();
                return lst;
            }
        }

        public List<CentralRiesgoBE> ObtenerPoliticaCredito(ReglaCentralRiesgo oReglaCentral)
        {
            ChannelFactory<IBasesExternasBL> factory = null;
            using (factory = new ChannelFactory<IBasesExternasBL>(config.Context + "Bases"))
            {
                IBasesExternasBL oUsu = factory.CreateChannel();
                List<CentralRiesgoBE> lst = oUsu.ObtenerPoliticaCredito(oReglaCentral);
                factory.Close();
                return lst;
            }
        }

        public List<ReglaCentralRiesgo> ObtenerReglaNegocio(ReglaCentralRiesgo oReglaCentral)
        {
            ChannelFactory<IBasesExternasBL> factory = null;
            using (factory = new ChannelFactory<IBasesExternasBL>(config.Context + "Bases"))
            {
                IBasesExternasBL oUsu = factory.CreateChannel();
                List<ReglaCentralRiesgo> lst = oUsu.ObtenerReglaNegocio(oReglaCentral);
                factory.Close();
                return lst;
            }
        }

        public List<ReglaCentralRiesgo> ObtenerReglaNegocioCondicion(ReglaCentralRiesgo oReglaCentral)
        {
            ChannelFactory<IBasesExternasBL> factory = null;
            using (factory = new ChannelFactory<IBasesExternasBL>(config.Context + "Bases"))
            {
                IBasesExternasBL oUsu = factory.CreateChannel();
                List<ReglaCentralRiesgo> lst = oUsu.ObtenerReglaNegocioCondicion(oReglaCentral);
                factory.Close();
                return lst;
            }
        }

        public void EvaluarCentralRiesgo(ClienteConsulta oDatos)
        {
            ChannelFactory<IBasesExternasBL> factory = null;
            using (factory = new ChannelFactory<IBasesExternasBL>(config.Context + "Bases"))
            {
                IBasesExternasBL oUsu = factory.CreateChannel();
                oUsu.EvaluarCentralRiesgo(oDatos);
                factory.Close();
            }
        }
    }
}
